package br.unifor.ads.desphouse.ui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;

import br.unifor.ads.desphouse.business.LancamentoTipoBusiness;
import br.unifor.ads.desphouse.entity.LancamentoTipo;
import br.unifor.ads.desphouse.internacionalizacao.Dicionario;
import br.unifor.ads.desphouse.util.MensagemUtil;

/**
 * 
 * @author Alex Girao
 */
public class PainelLancamentoTipoCadastro extends PainelGenerico {

	private static final long serialVersionUID = -6354517413887696169L;
	private JTextField jtfDescricao;
	private JButton jbtCancelar;
	private JButton jbtSalvar;
	private LancamentoTipoBusiness lancamentoTipoBusiness;
	private Long codigoEditar;

	public PainelLancamentoTipoCadastro() {
		super();
		lancamentoTipoBusiness = new LancamentoTipoBusiness();
		iniciarComponentes();
		aplicarEventos();
	}
	
	public PainelLancamentoTipoCadastro(Long codigoEditar) {
		lancamentoTipoBusiness = new LancamentoTipoBusiness();
		iniciarComponentes();
		aplicarEventos();
		this.codigoEditar = codigoEditar;
		carregarDados();
	}

	@Override
	protected void iniciarComponentes(){
		JLabel jlbDescrição = new JLabel(Dicionario.COMUNS_DESCRICAO+": *");
		jlbDescrição.setBounds(14, 34, 87, 15);
		add(jlbDescrição);
		
		jtfDescricao = new JTextField();
		jtfDescricao.setBounds(93, 32, 191, 19);
		add(jtfDescricao);
		jtfDescricao.setColumns(10);
		
		jbtSalvar = new JButton(Dicionario.COMUNS_SALVAR);
		jbtSalvar.setBounds(12, 87, 117, 25);
		add(jbtSalvar);
		
		jbtCancelar = new JButton(Dicionario.COMUNS_CANCELAR);
		jbtCancelar.setBounds(141, 87, 117, 25);
		add(jbtCancelar);
	}
	
	@Override
	protected void aplicarEventos() {
		jbtCancelar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				telaPai.atualizarPainel(new PainelLancamentoTipoListagem());
			}
		});
		jbtSalvar.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				salvar();
			}
		});
	}
	
	private void salvar(){
		try{
			if(isCamposObrigatoriosPreeenchidos()){
				LancamentoTipo tipo = new LancamentoTipo();
				tipo.setCodigo(codigoEditar);
				tipo.setDescricao(jtfDescricao.getText());
				lancamentoTipoBusiness.salvar(tipo);
				MensagemUtil.exibirPopUpInformacao(telaPai, Dicionario.MENSAGEM_GRAVADO_SUCESSO);
				telaPai.atualizarPainel(new PainelLancamentoTipoListagem());
			}else{
				MensagemUtil.exibirPopUpErro(telaPai,Dicionario.CRITICA_COMUNS_CAMPOS_OBRIGATORIOS);
			}
		}catch(Exception e){
			e.printStackTrace();
			MensagemUtil.exibirPopUpErro(telaPai, e.getMessage());
		}
	}

	private boolean isCamposObrigatoriosPreeenchidos() {
		return jtfDescricao.getText().trim().length()>0;
	}
	
	private void carregarDados(){
		try{
			LancamentoTipo tipo = lancamentoTipoBusiness.buscarPorCodigo(codigoEditar);
			jtfDescricao.setText(tipo.getDescricao());
		}catch(Exception e){
			e.printStackTrace();
			MensagemUtil.exibirPopUpErro(telaPai, e.getMessage());
		}
	}

}
